// PR c++/68683
// { dg-do compile { target c++2a } }

template <typename, typename>
struct is_same {
  static constexpr bool value = true;
};

template <typename T, typename U>
concept Same = is_same<T, U>::value;

template <typename T>
concept Integral = requires {
  { T () } -> Same<typename T::value_type>;
};

struct A {
  using value_type = bool;
};

int main () {
  Integral<A>;
  Integral<A>;
  return 0;
}
